In a client-server environment, there may be thousands of clients requesting service from a server. For example, a file sharing service provided by a Network File System (NFS) server over the internet may receive thousands of such requests per minute, from clients with diverse geographical locations. With so many clients relying on any given server it is important to maintain the proper functioning of each server.
Servers often become overloaded with requests for data. It is well-known in the art to distribute processing and communications activity across a computer network so that no single server is overwhelmed. This task is accomplished by providing several servers having redundant capabilities and managing the distribution of requests among these servers. If one server becomes unavailable or overburdened, requests are forwarded to another server that is currently available to serve the request. This process is called load balancing.
If a request is submitted to a server and the server does not provide communication indicating whether or not the server successfully processed the request, then there are typically two possible causes of the server failing to provide communication. The first possible cause of the failure to communicate is that the request was successfully processed, but the server failed to respond for some reason. The second possible cause of the failure to communicate is that the request was not successfully processed. Without knowing which of these has taken place, resubmitting the request to a different server may cause the request to be processed twice. Another processing of a request by a second server can be detrimental if the request has resulted in the fault or failure of the first server.